1. Technical Field
More particularly, the invention relates to a method and system, including a failover system, for trunking multiple links between a switch and a server.
2. Description of the Prior Art
As the use of networked computer systems increases, the need has arisen to provide additional bandwidth to handle the electronic traffic on the network. For example, inadequate bandwidth can result in data stalling in the pipeline between a client and a server. This stalling can significantly limit network performance.
Network interface cards (NIC) are the attachments that are used to connect a server or any computing device to a network. Such NICs include, for example, Ethernet cards or Token Ring cards that plug into a desktop computer or server. The NIC implements the physical layer signaling and the Media Access Control (MAC) for a computer attached to a network. Adding additional NICs to a computer effectively attaches the computer to a network multiple times. This increases the potential bandwidth into the network proportionally.
Load balancing is a technique used to reduce data bottlenecks caused by an overloaded communications network. In load balancing, the traffic between a server and a network over multiple NICs is balanced. Such load balancing typically requires software and a bridge or Ethernet switch between the server and client(s). Load balancing software, such as BALANCE.NLM from Network Specialists, Inc. of Lyndhurst, N.J. and SWITCH.NLM from Kalpana of Sunnyvale, Calif., is available in the form of a NetWare loadable module (NLM). This software is used for servers running Novell, Inc. NetWare NOS software.
Load balancing also provides fault tolerance, which maintains data communication between the server and the network in the event of a disruption in a data link. In a xe2x80x9cfailoverxe2x80x9d system, for example, a secondary link takes over the load if the primary link fails, such that signal continuity is maintained.
FIG. 1 is a schematic diagram of a failover system 10 according to the prior art, in which data are transmitted between the server 12 and clients 22 via a generic switch 24. Multiple links 18, 20 connect the switch to the server 12. Software drivers 16 control the transmission of data to and from the server over these links. If, for example, a NIC or network cable fails, traffic between the server and the network is passed to other functioning connections. Each NIC has an associated MAC address which is required for the NIC to receive packets on the network. In FIG. 1, the NICs for links 18 and 20 each have different MAC addresses, designated xe2x80x9cAxe2x80x9d and xe2x80x9cAxe2x80x2xe2x80x9d. Only one of these NICs is active at a time. No clients are attached to the standby NIC (Axe2x80x2). Thus, if the primary NIC (A) fails, the standby NIC assumes its address in accordance with the server protocol 14.
xe2x80x9cTrunkingxe2x80x9d is another scheme for increasing bandwidth to the server. FIG. 2 is a schematic diagram of a trunking system 28 according to the prior art, in which data are transmitted between the server and the clients 22 via a generic switch 24. Trunking is used with multiple server/network interfaces. In FIG. 2, multiple links 18, 26 link the switch to the server. The MAC addresses designated xe2x80x9cAxe2x80x9d and xe2x80x9cBxe2x80x9d are different for each of the NICs associated with the links 18, 26. Software drivers 16 control the flow of data to and from the server through these links. Using multiple network interfaces may result in a complex system configuration. Trunking minimizes this complexity by presenting the server as a single entity to the clients in the network. In an ideal trunking configuration, multiple interfaces in the server are also presented to the server as a single interface.
A server typically has three levels of addressing. The first level is a Name, often an ASCII string such as xe2x80x9cServer1.xe2x80x9d The second addressing level is the Network Address, for example, an IP address such as xe2x80x9c111.22.33.44.xe2x80x9d The third level is the MAC address. Different levels of software in the client identify the server by these different addresses.
Typically, a higher level address is mapped to a single instance of the address at the next level down. For example, a Name maps to a single IP address which maps to a single MAC address. In applications that employ trunking, multiple instances of addressing to the next level down are implemented. These multiple instances must be mapped into a single upper layer address. This mapping function is performed by the network protocols 14. For example, if a client has the name of the server to which it is to be connected but does not have the IP server""s address, it invokes an address resolution protocol to determine the server""s IP address. Thus, one function of the protocols is to resolve a lower layer address, given the address at a next layer up. These protocols are typically request/reply protocols.
Trunking involves identifying a portion in the client-to-server communication process where a mapping may be performed to allow a single server to use multiple network interfaces. This mapping may be performed at either of two points during the client-to-server communication process by using address resolution protocols. For example, Server Name to Network Level Address Mapping includes Domain Name Services (DNS) and NetBIOS name resolution; and Network Level Address to MAC Address Mapping includes Address Resolution Protocol (ARP) and General Server Query/Nearest Server Query (GSQ/NSQ). DNS and ARP are Internet protocols, while GSQ/NSQ is a protocol of Novell, Inc.
With lower level mapping, there is more opportunity for NICs and switches to participate in the trunking process. For example, BALANCE.NLM trunking supports any third-party NIC or switch. A separate media access controller (MAC) address is used for each NIC for a single network address. BALANCE.NLM requires a high software overhead, and its fault-tolerance scheme relies on higher-layer support or dropped connections.
The BALANCE.NLM driver captures information generated during the network address to MAC address mapping process to xe2x80x9cspoofxe2x80x9d. The term xe2x80x9cspoofingxe2x80x9d refers to performing a process in a way that gives the appearance that the process was performed in a standard way, although the process was actually performed in a non-standard way. In the case of BALANCE.NLM, it appears to a client that it""s receiving the MAC address which maps to the server""s network address. It also appears to the client that there is only one such MAC address, as is normally true. In actuality, the software spoofs the normal process by allowing multiple MAC addresses to be used.
Switch/NIC coordination schemes do not support third-party NICs or switches. A low level of software overhead is required for the driver in the outbound (sending) direction. No software is required in the inbound (receiving) direction. The server selects an output link via a simple function on the destination address. The switch selects the trunk link to the server based upon the same function on the source address. Connectivity is not lost if the link in the trunk fails. In such scheme, the same MAC address is used for all NICs. Thus, the NIC driver-to-switch protocol can be designed to permit auto-configuration.
Another trunking scheme uses a switch as a NIC card, or implements a switch in software using multiple NIC cards. In this scheme, there is a single MAC address for server identification of clients. The network operating system treats the switch as a NIC. The correct output link for delivery of traffic to clients is resolved by the switch card. This scheme requires either switching NICs, or requires significant server overhead. In such scheme, a spanning tree configuration is used to provide fault tolerance in case of failover. A switch address mapping scheme may be used to reduce software overhead. Such scheme supports third-party NICs. A switch software module is required to communicate to the switch. The switch actively participates in the address resolution process and performs load balancing by answering a client request with an address that should assist in load balancing. Additionally, the server driver must perform load balancing based upon the load or destination address.
However, the prior art methods for installing multiple NICs into a server are difficult to design and are subject to various problems arising from the complicated software and hardware configurations required. For example, higher-level mapping schemes such as BALANCE.NLM require a higher-intelligence-level driver. Furthermore, the BALANCE.NLM fault-tolerance scheme relies on higher-layer support or dropped connections. BALANCE.NLM clients are also spoofed such that it appears that they are receiving the only MAC address which maps to the server""s network address when, in actuality, multiple MAC addresses are used. This can create a confusing representation of the server for the client.
Typically, when multiple NICs are installed into standard Novell, Inc. or Microsoft NT servers, each NIC has a unique MAC address. This unique MAC address maps to a unique IP or IPX network address which then maps to a server name. A server that has two NICs also has two names and two network addresses. This is complex and potentially confusing to the network administrator. If one of the NICs fails, all clients connected to the server via that NIC are disconnected. The clients must have the name and network address of the other NIC to reestablish a connection. This may require a different network path to the other NIC. Additionally, the use of such multiple names and addresses for a single server can impair, or even prevent, fault tolerance.
When multiple NICs are installed in a server, a special layer of software is required in the server to give the multiple NICs the appearance of a single NIC to the server network software. The multiple NICs, however, do not appear as a single NIC to the clients because each NIC has its unique MAC address. These unique MAC addresses are provided to the client and switches.
Using a switch as a NIC card, or switching in software requires redundancy protocols (e.g.,.spanning trees) and increases costs. The switch mapping support trunking scheme requires a high level of intelligence in the switch. Additionally, the prior art schemes may require special hardware support on the server side, as well as a higher-intelligence-level server.
It would therefore be an advantage to provide a method and system for supporting multiple NICs in a server, where such NICs are viewed as a single NIC to both clients and the higher layers of the internal server software. It would be yet another advantage if such method and system supported fault tolerance. It would be a further advantage if such method and system increased bandwidth without requiring any reconfiguration of the server.
The invention provides a method and system for trunking multiple links between a switch and a server. One feature that distinguishes the invention from the prior art is the combination of switch hardware and server driver software. The invention provides both a trunking system and a failover system having active switch participation with the server NIC driver during load balancing.
In the invention, additional NICs or multi-port NICs are installed into a server. The drivers in the server recognize the additional NICs and automatically configure each additional NIC to be a member of a group that may include NICs that are already installed in the server. No additional reconfiguration of the server is required to add the additional NICs. A thin layer of software, referred to as the xe2x80x9cdriver shim,xe2x80x9d overlays the drivers to make the group of NICs appear as a single NIC to the network operating system and to the clients in the network.
The invention supports multiple NICs having the same MAC address by appearing on different ports. The NICs in the group are connected directly to a switch which recognizes the group as a single logical port, i.e. trunk. The NICs in the group function as multiple links to balance the traffic load to the clients. Each NIC uses the same MAC address for the network interface.
The driver and the switch examine the MAC address fields to select a link. When traffic from a client arrives at the server, the switch executes a deterministic algorithm on the data packet transmitting the traffic. Upon receiving a packet, the switch identifies the destination address in the address table. The corresponding entry returns a list of possible ports which can be used to reach the server and a flag which indicates that the server is to be reached via this trunked group of ports. The switch then selects a port in this group based upon the source address in the packet. The algorithm looks at the source address in the packet and selects one of the links in the group.
The driver in the server performs the same deterministic algorithm on the trunk to the clients, but on the destination addresses. The server software, including the driver shim, gives the group of NICs the appearance of as a single NIC and performs load balancing based upon the destination address. In an alternative embodiment of the invention, a monolithic driver specific to a vendor""s NIC is used to give the group of NICs the appearance of a single NIC.
The preferred embodiment of the invention supports a fault tolerance feature. In a first preferred embodiment of the invention, a single switch is connected to a server via multiple NIC links. The links to the server are configured as a trunk in which the load balancing algorithm uses the source address of the clients to select a link.
The multiple NICs in the server program their MAC addresses to be the same on all interfaces. Therefore, the same MAC address that is used as the server""s source address is provided to the switch for the multiple NIC ports. When a client sends a packet via a hub to the server, the switch selects one of the multiple ports by looking at the client""s MAC address.
In a second embodiment of the invention, the server is connected via multiple NIC links to a plurality of switches. A switch-to-switch link directly connects the switches together. A client can send a packet to the server via either path of the tree. However, it is preferable for a client to use the same path for a particular data communication or conversation. This is important to insure that the packets arrive in the same order as sent, which may not occur if paths were changed in midstream and the different paths were sufficiently different in length so that packets would not be received in order. The invention may be implemented using any number of switches or links supported by the network and server.
In a generic, prior art IEEE 802.1D bridge, a switch looks up a destination MAC address in the address table to find the appropriate output port for a packet. This table is created by the learning process of looking at the source MAC addresses in received packets. When a switch receives a packet on a particular port, it can assume that the host which sent the packet can also receive packets from that port. The switch notes the input port for a received packet and then updates the address table with this information.
If the address table already contains an entry for the source MAC address, the port in the address table and the port by which the packet was received should be the same. If the ports are not the same, then the MAC address is presumed to have moved. This move indication creates a move condition which is identified by the software that manages the address table. The address table should be updated with the new port to which the MAC address is assumed to have moved.
For a switch which supports trunking, it is possible that the same source MAC address is identified for packets received from any number of ports in the group. It is not desirable to create a move condition, or to update the address table continually. When multiple NICs in a server are attached to a network and these NICs use the same MAC address, it is possible to receive packets with this MAC address as the source MAC address on many ports. Therefore, the invention provides a scheme that mitigates the effect of the switch-to-switch link on the return of such packets from the server to the client, and that substantially prevents interruptions in the server caused thereby.
In this scheme, the switch is allowed to ignore the move interrupt even if the port where the address has been seen is not in the group of trunk ports. A flag for the server""s MAC is included in the switch""s address table. The flag notifies the switch that it is acceptable to see the server""s MAC address appearing on several ports. The switch is directed not to notify the system operator that the address has moved.